/**************************************************************
    Problem: 1131
    User: zhaolingtu
    Language: C++
    Result: 正确
    Time:26 ms
    Memory:2144 kb
    Judger:judge.surface3
**************************************************************/

/*
 * H题：组合数计算
 * 题目描述：计算组合数C(n,r)，即从n个元素中取r个元素的组合数。
 * 解题思路：利用组合数的对称性C(n,r)=C(n,n-r)，取较小的r值进行计算，减少计算量；使用long long避免整数溢出；采用逐步乘除的方式计算组合数。
 * 考点：组合数计算、数学公式优化、数据类型选择和多组输入处理。
 */

#include <iostream>  // 包含输入输出流库
using namespace std;

int main() {
  int n, r;              // n为元素总数，r为选取的元素个数
  
  // 支持多组输入，每组输入n和r
  while (cin >> n >> r) {
    // 利用组合数性质C(n,r) = C(n,n-r)，取较小的r值进行计算，减少计算量
    if (r > n - r) {
      r = n - r;
    }

    long long s = 1;     // 使用long long避免整数溢出
    // 采用逐步乘除的方式计算组合数，避免中间结果过大
    for (int i = 1; i <= r; i++) {
      s = s * (n - r + i) / i;  // 组合数公式优化计算
    }

    cout << s << endl;  // 输出计算得到的组合数
  }
  
  return 0;              // 程序正常结束
}